package gui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import red.ClientKeepAliveSocket;
import validacion.MensajesValidacion;

import logica.Configuracion;
import logica.ConfiguracionMedicion;

@SuppressWarnings("serial")
public class Panel_Config extends JPanel {

	private JPanel p1, p2,p3;

	private JTextField[] texto;
	private JLabel[]	 l;
	private JButton	     boton_guardar, boton_conectar;

	private String ip_default;		 // Destino 
	private int    puerto_default;	 // Destino
	private int    id_lugar_default; // Origen
	private JComboBox puertosCombo;
	private String valoresCombo[] = {"COM1", "COM2", "COM3", "COM4", "COM5", "COM6"};

	private ClientKeepAliveSocket ckas;

	/* Constructor */
	public Panel_Config(ClientKeepAliveSocket kas){
		setLayout(new BorderLayout());

		ckas = kas; 

		ip_default 		 = Configuracion.getIp(); 	
		puerto_default 	 = Configuracion.getPuerto();
		id_lugar_default = Configuracion.getIdlugar();

		// Panel 1 
		p1 	  = new JPanel();

		texto = new JTextField[3];
		l	  = new JLabel[3];		

		texto[0] = new JTextField(ip_default, 20);
		texto[1] = new JTextField(Integer.toString(puerto_default), 6);
		texto[2] = new JTextField(Integer.toString(id_lugar_default));

		l[0]     = new JLabel("IP");
		l[1]     = new JLabel("Puerto");
		l[2]	 = new JLabel("ID Lugar");

		for(int i=0;i<l.length; i++){
			p1.add(l[i]); 
			p1.add(texto[i]);
		}

		// Panel 2 
		p2 = new JPanel();

		boton_guardar  = new JButton("Guardar Cambios");
		boton_guardar.addActionListener(new guardar_config_action());

		boton_conectar  = new JButton("Conectar");
		boton_conectar.addActionListener(new boton_conectar_action());

		if(ckas.estaConectado())
			boton_conectar.setEnabled(false);
		else 
			boton_conectar.setEnabled(true);

		p2.add(boton_guardar);
		p2.add(boton_conectar);
		
		
		
		//Panel combo puerto ECG
		p3= new JPanel();
		puertosCombo= new JComboBox(valoresCombo);
		puertosCombo.setSelectedItem(ConfiguracionMedicion.getPUERTO_ENTRADA_ECG());
		
		JLabel texto= new JLabel("Puerto serie: ");
		p3.add(texto);
		p3.add(puertosCombo);
		// Compongo
		add(p1, BorderLayout.CENTER);
		add(p2, BorderLayout.SOUTH);	
	}

	private class boton_conectar_action implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			if(!ckas.estaConectado()){
				ckas.conectar();
			}
		}

	}

	private class guardar_config_action implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			if(!texto[0].getText().equals(ip_default))
				Configuracion.setIp(texto[0].getText());

			if(!texto[1].getText().equals(puerto_default)){
				try {
					Configuracion.setPuerto( Integer.parseInt(texto[1].getText()) );
				} catch (NumberFormatException e1) {
					JOptionPane.showMessageDialog(null, 
							MensajesValidacion.MENSAJE_ERROR_INGRESO_PUERTO);
				}		
			}

			if(!texto[2].getText().equals(id_lugar_default)){
				try {
					Configuracion.setIdlugar( Integer.parseInt(texto[2].getText()) );
				} catch (NumberFormatException e1) {
					JOptionPane.showMessageDialog(null, 
							MensajesValidacion.MENSAJE_ERROR_NUMERO_LUGAR);
				}		
			} // Fin if

		} // Fin actionPerformed
	}


}
